package ce.com.cenewbluesdk.entity.k3;

import android.util.Log;



import java.io.Serializable;

import ce.com.cenewbluesdk.uitl.ByteBuilder;
import ce.com.cenewbluesdk.uitl.ByteUtil;
import ce.com.cenewbluesdk.uitl.Util;

/**
 * Created by Administrator on 2016/2/29 0029.
 */
public class Send_note implements Serializable{

    private int id;    //信息唯一ID号
    private int enable;//0：删除，1：使能此日志，2：停止。
    private int time_type;    //0: 太阳历 ， 1：月亮历
    private int start_time;//日志提醒时间，精确到秒值，为绝对时间。
    private int end_time;//结束时间，在此范围内有效
    private int time_num;//提前时间：[0~7]: 0:0min , 1: 5min , 2:10min,3:30min, 4:1hour, 5:1day, 6: 3days.
    private int repeatType;//重复类型：0、不重复，仅单次，1、周重复，2、日重复，3、月重复，4、年重复。
    private int repeatday;//周重复的天数，[0~6]每一位代码相应的周几，0:周日，1:周一，……，6:周六。当重复类型为其它时则此值为0.
    private int len;//实际数据长度值。
    private String context;//日志主题内容，为字符串型，其长度最大不超过40字节。

    private int noteType;

    private byte[] reserved = new byte[3];

    /**
     * 设置周重复
     * 这个只能设置一周的某一天重复
     * 周日是0；
     * 周六是6；
     * @param weedDay
     */
    public void setWeedDay(int weedDay){
        repeatday=1<<weedDay;
    }
    /**
     * 设置周重复
     * 传一个长度为8的int数组进去
     * int【0】为周日
     * int[6]为周6
     * int[7]=0;
     * @param weedDays
     */
    public void setWeedDay(int []weedDays){
        repeatday= Util.Convert(weedDays);
    }

    /**
     *  0:0min , 1: 5min , 2:10min,3:30min, 4:1hour, 5:1day, 6: 3days.
     *
     *  第7位填0
     * @param timeNum
     */
    public void setTimeNum(int [] timeNum){
        time_num=Util.Convert(timeNum);
    }

    public Send_note(){}

    /**
     *
     * @param id   日志ID
     * @param enable //0：删除，1：使能此日志，2：停止。
     * @param time_type   //0: 太阳历 ， 1：月亮历
     * @param start_time//日志提醒时间，精确到秒值，为绝对时间。
     * @param end_time//结束时间，在此范围内有效
     * @param repeatType//重复类型：0、不重复，仅单次，1、周重复，2、日重复，3、月重复，4、年重复。
     * @param context//日志主题内容，为字符串型，其长度最大不超过40字节。
     */
    public Send_note(int id, int enable, int time_type, int start_time,
                     int end_time, int repeatType, int noteType,
                     String context) {
        this.id = id;
        this.enable = enable;
        this.time_type = time_type;
        this.start_time = start_time;
        this.end_time = end_time;
        this.repeatType = repeatType;
        this.context = context;
        this.noteType=noteType;
    }

    /**
     *
     * @param id
     * @param enable
     * @param time_type
     * @param start_time
     * @param end_time
     * @param time_num 长度是8
     * @param repeatType
     * @param repeatday 长度是8
     * @param context
     */
    public Send_note(int id, int enable, int time_type, int start_time,
                     int end_time, int[] time_num, int repeatType,
                     int[] repeatday, String context) {
        this.id = id;
        this.enable = enable;
        this.time_type = time_type;
        this.start_time = start_time;
        this.end_time = end_time;
        this.time_num = Util.Convert(time_num);
        this.repeatType = repeatType;
        this.repeatday = Util.Convert(repeatday);
        this.context = context;
    }

    private byte[] sendbyte;

    public byte[] getSendbyte() {
        byte[] contextBytes =
                new ByteBuilder().writeString(context, 48, false).toByteArray();
        len=contextBytes.length;
        Log.e("liu","len="+len);
        sendbyte = new byte[22 +48];
        System.arraycopy(ByteUtil.intToByte4(id), 0, sendbyte, 0, 4);
        sendbyte[4] = (byte) enable;
        sendbyte[5] = (byte) time_type;
        System.arraycopy(ByteUtil.intToByte4( start_time), 0, sendbyte, 6, 4);

        if(end_time==Integer.MAX_VALUE){
            System.arraycopy(new byte[]{(byte) 0xff,(byte) 0xff,(byte) 0xff,(byte) 0xff}, 0, sendbyte, 10, 4);
        }else{
            System.arraycopy(ByteUtil.intToByte4( end_time), 0, sendbyte, 10, 4);
        }

        sendbyte[14] = (byte) time_num;
        sendbyte[15] = (byte) repeatType;
        sendbyte[16] = (byte) repeatday;
        sendbyte[17] = (byte) len;
        Log.e("liu","end_time="+end_time);

        System.arraycopy(contextBytes, 0, sendbyte, 18, contextBytes.length);


        sendbyte[sendbyte.length-4]= (byte) noteType;
        System.arraycopy(reserved, 0, sendbyte, sendbyte.length-3, 3);
        return sendbyte;
    }

    public int getId() {
        return id;
    }
}
